/********************************************
 * 功能说明: 
 * 模块名称: 
 * 系统名称: 
 * 软件版权: 北京银杉金服科技有限公司
 * 系统版本: 1.0.0
 * 开发人员: zhangfb
 * 开发时间: 2018/9/9 20:50
 * 审核人员: 
 * 相关文档: 
 * 修改记录: 修改日期 修改人员 修改说明
 *********************************************/
package com.hyacinth.constant;

import com.hyacinth.util.JsonMapper;

import java.util.ArrayList;
import java.util.List;

/**
 * 资源类型枚举
 * @author zhangfb
 * @version 1.0.0.1
 * @since JDK 1.8
 */
public enum ResourceTypeEnum {

    /**
     * 资源分类：platform-平台 system-系统 catalog-目录 menu-菜单 func-功能 btn-按钮 html-页面
     * (级别)
     */
    RESOURCE_PLATFORM("platform",1),
    RESOURCE_SYSTEM("system",2),
    RESOURCE_CATALOG("catalog",3),
    RESOURCE_MENU("menu",4),
    RESOURCE_FUNC("func",5),
    RESOURCE_BTN("btn",5),
    RESOURCE_HTML("html",5);

    private String name;
    private int level;

    ResourceTypeEnum(String name, int level) {
        this.name = name;
        this.level = level;
    }

    public int getLevel() {
        return level;
    }

    public String getName() {
        return name;
    }

    /**
     * Gets enum.
     * @param level   资源级别
     * @return the enum
     */
    public static List<ResourceTypeEnum> getEnumByLevel(int level) {
        List<ResourceTypeEnum> enums = new ArrayList<>();
        for (ResourceTypeEnum rte : ResourceTypeEnum.values()) {
            if (rte.getLevel() == level) {
                enums.add(rte);
            }
        }
        return enums;
    }

    /**
     * Gets enum.
     * @param level   资源级别
     * @return the enum
     */
    public static List<String> getName(int level) {
        List<String> enums = new ArrayList<>();
        for (ResourceTypeEnum rte : ResourceTypeEnum.values()) {
            if (rte.getLevel() == level) {
                enums.add(rte.getName());
            }
        }
        return enums;
    }

    /**
     * Gets enum.
     * @param name 资源名称
     * @return the enum
     */
    public static ResourceTypeEnum getEnumByName(String name) {
        for (ResourceTypeEnum rte : ResourceTypeEnum.values()) {
            if (rte.getName().equals(name)) {
                return rte;
            }
        }
        return null;
    }
}

